<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>inSona API</title>
    <!--  <link rel="stylesheet" type="text/css" href="./static/css/bootstrap.min.css"> -->
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="./static/css/casambi.css">
    <link rel="stylesheet" type="text/css" href="./static/css/developer-site.css">
    <script src="/static/js/jquery.min.js"></script>
</head>

<body>
</body>
<div id="content-header">
    <h1>
        inSona-Developer Site
    </h1>
</div>
<div id="content">
    <div id="menu-list">
        <h2>目录</h2>
        <p>
            <a href="#documentation" title="">总览</a>
            <br>
        </p>
        <h2>inSona API</h2>
        <ul>
            <li><a href="#connect" title="">建立TCP连接</a></li>
            <li><a href="#control" title="">控制协议</a></li>
            <ul>
                <li><a href="#info" title="">消息内容</a></li>
                <li><a href="#sync" title="">同步设备</a></li>
                <ul>
                    <li><a href="#clientsync" title="">客户端发起同步请求</a></li>
                    <li><a href="#response" title="">服务端返回设备信息</a></li>
                </ul>
                <li><a href="#control-device" title="">控制设备</a></li>
                <ul>
                    <li><a href="#client-control" title="">客户端发起控制设备请求</a></li>
                    <li><a href="#server-resp" title="">服务端返回控制设备是否成功</a></li>
                </ul>
                <li><a href="#server-event" title="">服务器主动上报event</a></li>
                <ul>
                    <li><a href="#device-resq" title="">设备状态改变</a></li>
                </ul>
            </ul>
        </ul>
    </div>
    <script>
        var auth_endpoints = "";
        var other_endpoints = "";
        for (var i = 0; i < COMMANDS.length; i++) {
            var command = COMMANDS[i];
            if (typeof (command) == "object" && !command.path.endsWith("/session")) {
                other_endpoints += '<li><a href="#' + getEndpointId(command) + '">' + command.title + '</a></li>';
            } else if (typeof (command) == "object" && command.path.endsWith("/session")) {
                auth_endpoints += '<li><a href="#' + getEndpointId(command) + '">' + command.title + '</a></li>';
            }

        }
        $("#auth-endpoints").prepend(auth_endpoints);
        $("#endpoints").prepend(other_endpoints);
    </script>
    <div id="main-content">
        <h2 id='documentation'>总览</h2>
        <p>inSona照明控制系统由硬件、云端、⽤⼾App组成。 硬件包括⽹关、灯具、传感器、⾯板等。</p>
        <p>⽹关通过蓝⽛MESH协议与其他设备进⾏通信，通过Wi-Fi或者有线与云端/本地服务器通信。App通过局域⽹或者服务器与⽹关通信，并实现设备的控制。</p>
        <p>⽹关：⼀个特殊硬件设备，所有系统的其他类型设备统称为⼦设备，⽽与之相对的就是⽹关，
            称为桥设备。⼦设备本⾝只有蓝⽛通信能⼒，⽽桥设备同时具备蓝⽛和WiFi和以太⽹能⼒。桥设备是连接互联⽹和蓝⽛MESH⽹络的桥梁，在中间承担协议翻译，信息存储和转发的功能。</p>
        <p>inSona提供本地控制协议，第三⽅设备可以通过局域⽹发现协议扫描发现附近的⽹关，然后设备可以⽹关建⽴TCP连接，后续所有操作都建⽴在TCP通讯的基础上。整个流程如下：
            本地发现⽹关-->建⽴socket连接-->同步设备信息-->设备控制/状态同步等。 </p>
        </p>
        <h2>inSona API</h2>
        <p>inSona API 用于从本地网关通过TCP连接获取到蓝牙mesh网络内的设备信息</p>
        <h3>版本历史</h3>
        <ul>
            <li>V1-用户通过TCP会话并请求与网络相关的信息</li>
            <li>V2-2020.1210 添加传感器支持</li>
            <li>V3-2021.423 增加场景数据和控制支持</li>
            <li>V4-2021.526 增加面板按键数量标识，开关灯亮度色温反馈，</li>
        </ul>
        <h1>开始吧</h1>
        <ol>
            <li>获取网关IP地址，通过inSona APP操作添加网关设备</li>
            <li>进入网关页面，查看网关设备IP</li>
            <li>通过控制TCP连接与网关建立会话</li>
        </ol>
        <h2 id="connect">建立TCP连接</h2>
        <p>通过TCP建立网络连接，网关端口号为：8091</p>
        <h4>以Python为例</h4>
        <pre>
from socket import *

HOST = '127.0.0.1' # or 'localhost'
PORT = 8091
BUFSIZ =1024
ADDR = (HOST,PORT)

tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)</pre>
        <p></p>
        <h2 id="control">控制协议</h2>
        <h3 id="info">消息内容</h3>
        <p>客⼾端和⽹关之间使⽤JSON格式的消息进⾏交互，消息基于TCP协议进⾏传递；消息之间
            以“\r\n”作分隔
        </p>
        <p>请求消息的基本格式如下:<br>
        <pre>
{
    "version": 1,
    "uuid": 1234,
    "type": "all",
    "method": "c.query"
}</pre>
        </p>
        <h3>字段定义</h3>
        <div class="endpoint-info-box info-box">
            <div class="endpoint-heading">version:</div>
            <div class="endpoint-content http-request">协议版本，⽬前只有⼀个可⽤版本1。</div> <br>
            <div class="endpoint-heading">uuid:</div>
            <div class="endpoint-content path-parameters">请求uuid,请求消息与回应消息的uuid相同，可根据这个来匹配</div> <br>
            <div class="endpoint-heading">method:</div>
            <div class="endpoint-content request-body">方法名</div>
        </div>
        <h3>⽬前以⽀持的上下⾏消息的⽅法有如下⼏种：</h3>
        <table class="table table-bordered table-striped js-options-table">
            <thead>
                <tr>
                    <th>方向</th>
                    <th>Method</th>
                    <th>说明</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>客户端->网关</td>
                    <td>c.query</td>
                    <td>请求mesh内设备信息</td>
                </tr>
                <tr>
                    <td>网关->客户端</td>
                    <td>s.query</td>
                    <td>返回mesh内设备信息</td>
                </tr>
                <tr>
                    <td>客户端->网关</td>
                    <td>c.control</td>
                    <td>控制设备</td>
                </tr>
                <tr>
                    <td>网关->客户端</td>
                    <td>s.control</td>
                    <td>返回控制设备是否成功</td>
                </tr>
                <tr>
                    <td>网关->客户端</td>
                    <td>s.event</td>
                    <td>网关主动通知</td>
                </tr>
            </tbody>
        </table>
        <h3 id="sync">同步设备</h3>
        <h4 id="clientsync">客户端发起同步请求</h4>
        <p>
        <pre>
{
    "version": 1,
    "uuid": 1234,
    "type":"all",
    "method": "c.query"
}</pre>
        </p>
        <h4 id="response">服务端返回设备信息</h4>
        <table class="table table-bordered table-striped js-options-table">
            <thead>
                <tr>
                    <th>字段</th>
                    <th>含义</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>devices</td>
                    <td>设备列表</td>
                </tr>
                <tr>
                    <td>rooms</td>
                    <td>房间列表,可与devices中设备的roomId对应表示设备所处房间</td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
                <tr>
                    <td>did</td>
                    <td>设备唯一标识</td>
                </tr>
                <tr>
                    <td>pid</td>
                    <td>表示产品型号</td>
                </tr>
                <tr>
                    <td>ver</td>
                    <td>软件版本</td>
                </tr>
                <tr>
                    <td>alive</td>
                    <td>设备在线状态 （1.在线，0.不在线）</td>
                </tr>
                <tr>
                    <td>name</td>
                    <td>设备名称（APP内修改）</td>
                </tr>
                <tr>
                    <td>type</td>
                    <td>设备类型:<br>
                        灯具(1984)<br>
                        开合帘(1860)<br>
                        卷帘(1861)<br>
                        开合帘带角度(1862)<br>
                        面板(1218)<br>
                        传感器(1344)<br>
                        空调(1536)<br>
                        地暖(1537)<br>
                        新风(1538)<br></td>
                </tr>
            </tbody>
        </table>
        <table class="table table-bordered table-striped js-options-table">
            <thead>
                <tr>
                    <th>func</th>
                    <th>说明</th>
                    <th>value</th>
                    <th>说明</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>2</td>
                    <td>只能开关的设备</td>
                    <td>0/1</td>
                    <td>关/开</td>
                </tr>
                <tr>
                    <td>3</td>
                    <td>只能调亮度的灯或窗帘</td>
                    <td>0-100</td>
                    <td>当前亮度或位置百分比</td>
                </tr>
                <tr>
                    <td>4</td>
                    <td>双色温灯</td>
                    <td>0-100,<br>0-100</td>
                    <td>亮度百分比,<br>色温百分比 色温0表示最暖 100表示最冷</td>
                </tr>
                <tr>
                    <td>5</td>
                    <td>HSL灯</td>
                    <td>0-100,<br>0-360,<br>0-100</td>
                    <td>亮度百分比,<br>色相(如红色为0，绿色120，蓝色240),<br>饱和度</td>
                </tr>
                <tr>
                    <td>6</td>
                    <td>RGBW灯中的W</td>
                    <td>0-100</td>
                    <td>亮度百分比</td>
                </tr>
                <tr>
                    <td>9</td>
                    <td>面板按键<br></td>
                    <td>N</td>
                    <td>按键数量</td>
                </tr>
                <tr>
                    <td>10</td>
                    <td>传感器</td>
                    <td></td>
                    <td></td>
                </tr>
                <tr>
                    <td>14</td>
                    <td>空调</td>
                    <td>0/1,<br>0,1,2,7,<br>1-5,256,<br>16-30,<br>-10-40<br>0-100</td>
                    <td>开关,<br>模式,0通风,1制热,2制冷,7除湿<br>风速,1最小,5最大,256自动<br>设定温度<br>环境温度<br>环境湿度</td>
                </tr>
                <tr>
                    <td>21</td>
                    <td>地暖</td>
                    <td>0/1,<br>10-30,<br>-10-40<br>0-100</td>
                    <td>开关,<br>设定温度<br>环境温度<br>环境湿度</td>
                </tr>
                <tr>
                    <td>24</td>
                    <td>新风</td>
                    <td>0/1,<br>1-5,256<br>0-100</td>
                    <td>开关,<br>风速,1最小,5最大,256自动<br>环境湿度</td>
                </tr>
                <tr>
                    <td>15</td>
                    <td>温控类开关设定</td>
                    <td></td>
                    <td>只在funcs里用于表示是否支持</td>
                </tr>
                <tr>
                    <td>16</td>
                    <td>温控类风速设定</td>
                    <td></td>
                    <td>只在funcs里用于表示是否支持</td>
                </tr>
                <tr>
                    <td>17</td>
                    <td>温控类模式设定</td>
                    <td></td>
                    <td>只在funcs里用于表示是否支持</td>
                </tr>
                <tr>
                    <td>18</td>
                    <td>温控类温度设定 支持0.5</td>
                    <td></td>
                    <td>只在funcs里用于表示是否支持</td>
                </tr>
                <tr>
                    <td>19</td>
                    <td>温控类环境温度</td>
                    <td></td>
                    <td>只在funcs里用于表示是否支持</td>
                </tr>
                <tr>
                    <td>27</td>
                    <td>温控类环境湿度</td>
                    <td></td>
                    <td>只在funcs里用于表示是否支持</td>
                </tr>
                <tr>
                    <td>28</td>
                    <td>温控类温度设定 不支持0.5</td>
                    <td></td>
                    <td>只在funcs里用于表示是否支持</td>
                </tr>
                </tr>
            </tbody>
        </table>
        <p>代码示例：<br>
        <pre>{
    "version": 1,
    "uuid": 1234,
    "method": "s.query",
    "result": "ok",
    "rooms": [{
        "roomId": 6,
        "name": "办公区"
    }, {
        "roomId": 14,
        "name": "会议室"
    }],
    "devices": [{
        "did": "ECC57F10015800",
        "pid": 3,
        "ver": "61719",
        "type": 1984,
        "alive": 1,
        "roomId": 2,
        "name": "左",
        "func": 0,
        "funcs": [],
        "value": []
    }, {
        "did": "ECC57F1003E000",
        "pid": 3,
        "ver": "61719",
        "type": 1984,
        "alive": 1,
        "roomId": 2,
        "name": "右",
        "func": 0,
        "funcs": [],
        "value": []
    }, {
        "did": "ECC57F1031F100",
        "pid": 256,
        "ver": "61706",
        "type": 1984,
        "alive": 1,
        "roomId": 26,
        "name": "会议过道",
        "func": 4,
        "funcs": [2, 3, 4, 11],
        "value": [0, 100, 8]
    }, {
        "did": "ECC57F10327200",
        "pid": 256,
        "ver": "61706",
        "type": 1984,
        "alive": 1,
        "roomId": 26,
        "name": "茶柜灯",
        "func": 4,
        "funcs": [2, 3, 4, 11],
        "value": [0, 100, 8]
    }, {
        "did": "ECC57F1038DD00",
        "pid": 256,
        "ver": "61706",
        "type": 1984,
        "alive": 1,
        "roomId": 26,
        "name": "沙发射灯",
        "func": 4,
        "funcs": [2, 3, 4, 11],
        "value": [0, 54, 8]
    }]
}
表示有2个设备  其中单设备为 "F0ACD777770300" 支持亮度色温，当前为on，50%，50%，
组地址“A0” 支持亮度色温，当前为on，50%，50%
“F0ACD760002D00” 为传感器
"rooms"为当前蓝牙网络内的房间信息，roomId与设备内的roomId对应
{
    "did": "ECC57F11A6B0FF",
    "pid": 27,
    "ver": "61736",
    "type": 1218,
    "alive": 1,
    "roomId": 1,
    "name": "大厅右面板",
    "func": 9,
    "funcs": [9],
    "value": [4]
}

面板数据，通过value[4]代表此面板按键数量为4键面板

关于灯具类型区分，inSona设备分为 继电器开关，单色温调光，双色温，RGB，RGB+双色温
根据同步返回的数据，对设备的funcs进行解析
【2，11】继电器的灯 【2，3，11】 只调光的灯 【2，3，4，11】双色温灯 【2，3，5，11】RGB灯 【2，3，4，5，11】 RGB+双色温
            </pre>
        </p>
        <h3 id="control-device">控制设备</h3>
        <h4 id="client-control">客户端发起控制设备请求</h4>
        <table class="table table-bordered table-striped js-options-table">
                <thead>
                    <tr>
                        <th>字段</th>
                        <th>含义</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>did</td>
                        <td>string<br>设备唯一标识</td>
                    </tr>
                    <tr>
                        <td>action</td>
                        <td>string<br>控制类型</td>
                    </tr>
                    <tr>
                        <td>value</td>
                        <td>int[]<br>控制参数</td>
                    </tr>
                    <tr>
                        <td>transition</td>
                        <td>int<br>灯控时的渐变时间,0表示默认,单位毫秒(ms)</td>
                    </tr>
                </tbody>
            </table>

            <h4>action 和 value 说明</h4>
            <table class="table table-bordered table-striped js-options-table">
                <thead>
                    <tr>
                        <th>action(value长度)</th>
                        <th>value</th>
                        <th>含义</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>onoff(1)</td>
                        <td>0/1</td>
                        <td>开关</td>
                    </tr>
                    <tr>
                        <td>level(1)</td>
                        <td>0-100</td>
                        <td>调节亮度或窗帘百分比</td>
                    </tr>
                    <tr>
                        <td>temperature(1)</td>
                        <td>0-100</td>
                        <td>色温百分比 色温0表示最暖 100表示最冷</td>
                    </tr>
                    <tr>
                        <td>ctl(2)</td>
                        <td>0-100,<br>0-100</td>
                        <td>亮度百分比,<br>色温百分比 色温0表示最暖 100表示最冷</td>
                    </tr>
                    <tr>
                        <td>hsl(3)</td>
                        <td>0-100,<br>0-360,<br>0-100</td>
                        <td>亮度百分比,<br>色相(如红色为0，绿色120，蓝色240),<br>饱和度</td>
                    </tr>
                    <tr>
                        <td>wLevel(1)</td>
                        <td>0-100</td>
                        <td>RGBW中W亮度百分比</td>
                    </tr>
                    <tr>
                        <td>scene(1)</td>
                        <td>0-255</td>
                        <td>触发场景,场景号获取通过c.query.scene<br></td>
                    </tr>
                    <tr>
                        <td>lightmode(1)</td>
                        <td>0-单色温呼吸<br>1-双色温白光呼吸<br>2-双色温暖光呼吸<br>3-双色温暖白呼吸<br></td>
                        <td>呼吸模式</td>
                    </tr>
                    <tr>
                        <td>adaptiveLight(1)</td>
                        <td>0/1</td>
                        <td>节律开关</td>
                    </tr>
                    <tr>
                        <td>curtainStop(0)</td>
                        <td>NA</td>
                        <td>窗帘停止</td>
                    </tr>
                    <tr>
                        <td>curtainAngle(1)</td>
                        <td>0-180</td>
                        <td>窗帘的角度控制</td>
                    </tr>
                    <tr>
                        <td>swBgLightness(1)</td>
                        <td>0-100</td>
                        <td>面板背光灯亮度</td>
                    </tr>
                    <tr>
                        <td>swLeds(2*n)</td>
                        <td>[序号, 0-100亮度]*n</td>
                        <td>面板按键指示灯 可以一次设1个或多个</td>
                    </tr>
                    <tr>
                        <td>sensorEnable(1)</td>
                        <td>0/1</td>
                        <td>传感器启用禁用</td>
                    </tr>
                    <tr>
                        <td>acOnoff(1)</td>
                        <td>0/1</td>
                        <td>空调开关</td>
                    </tr>
                    <tr>
                        <td>acMode(1)</td>
                        <td>0-通风<br>1-制热<br>2-制冷<br>7-除湿<br></td>
                        <td>空调模式</td>
                    </tr>
                    <tr>
                        <td>acTemperature(1)</td>
                        <td>16-30</td>
                        <td>空调温度,摄氏度</td>
                    </tr>
                    <tr>
                        <td>acSpeed(1)</td>
                        <td>1-5,16</td>
                        <td>1表示风量最小<br>5表示风量最大<br>16表示自动</td>
                    </tr>
                    <tr>
                        <td>fhOnoff(1)</td>
                        <td>0/1</td>
                        <td>地暖开关</td>
                    </tr>
                    <tr>
                        <td>fhTemperature(1)</td>
                        <td>10-30</td>
                        <td>地暖温度,摄氏度</td>
                    </tr>
                    <tr>
                        <td>faOnoff(1)</td>
                        <td>0/1</td>
                        <td>新风开关</td>
                    </tr>
                    <tr>
                        <td>faSpeed(1)</td>
                        <td>1-5,16</td>
                        <td>1表示风量最小<br>5表示风量最大<br>16表示自动</td>
                    </tr>
                </tbody>
            </table>
            <p>代码示例：<br>
                <pre>{
    "version": 1,
    "uuid": 1,
    "method": "c.control",
    "did": "F0ACD777770300",
    "action": "onoff",
    "value": [0],
    "transition": 0
}            
表示把设备"F0ACD777770300"设为关闭

{
    "version": 1,
    "uuid": 1,
    "method": "c.control",
    "did": "a0",
    "action": "level",
    "value": [30],
    "transition": 0
}    
表示把组设备"a0"设为亮度30%

{
    "version": 1,
    "uuid": 1,
    "method": "c.control",
    "did": "ECC57F10B3C500",
    "action": "curtainstop",
    "value": [],
    "transition": 0
}
"action": "curtainstop",为窗帘停止命令 value为空
                    </pre>
                </p>
        <h4 id="server-resp">服务端返回控制设备是否成功</h4>
        <p>
            如果控制成功服务端将返回“OK”
        <pre>
{
    "version": 1,
    "uuid": 1,
    "method": "s.control",
    "result": "ok"
}</pre>
        </p>
 
        <h2 id="server-event">服务器主动上报event</h2>
        <table class="table table-bordered table-striped js-options-table">
            <thead>
                <tr>
                    <th>evt 值</th>
                    <th>含义</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>"meshchange"</td>
                    <td>配置或在线状态变化,客户端需重新发送 (c.query) 同步设备</td>
                </tr>
                <tr>
                    <td>"status"</td>
                    <td>设备状态改变。 did,func,value解析同"服务端返回设备信息"</td>
                </tr>
                <tr>
                    <td>"sensor"</td>
                    <td>传感器检测状态变化</td>
                </tr>
                <tr>
                    <td>"switch.key"</td>
                    <td>按键事件</td>
                </tr>
                <tr>
                    <td>"scene.recall"</td>
                    <td>触发场景</td>
                </tr>
                <tr>
                    <td>"scene.off"</td>
                    <td>场景关闭</td>
                </tr>
                <tr>
                    <td>"heartbeat"</td>
                    <td>心跳包,1分钟发一次</td>
                </tr>
            </tbody>
        </table>
        <h3 id="device-resq">设备状态改变</h3>
        <p>
            代码示例：
        <pre>
{
    "version": 1,
    "uuid": 14,
    "method": "s.event",
    "evt": "status",
    "did": "F0ACD777770300",
    "func": 2,
    "value": [0]
}
表示设备"F0ACD777770300"被关了

{
    "version": 1,
    "uuid": 16,
    "method": "s.event",
    "evt": "status",
    "did": "F0ACD777770300",
    "func": 4,
    "value": [15, 50]
}
表示设备"F0ACD777770300"亮度色温被调到15%,50% 

通过开关模式打开设备，当设备打开是反馈数据如下
{
    "version": 1,
    "uuid": 617,
    "method": "s.event",
    "evt": "status",
    "did": "A9",
    "func": 2,
    "value": [1],
    "status": [4, 85, 0]
}
value [1] 表示设备被打开，status[4,85,0]  4表示双色温CTL命令，85表示当前亮度，0表示色温值
                </pre>
        </p>

        <h3 id="device-resq">传感器状态上报事件</h3>
        <table class="table table-bordered table-striped js-options-table">
            <thead>
                <tr>
                    <th>value[0]值</th>
                    <th>value[1]值</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>1-人感</td>
                    <td>1-有人 0-无人</td>
                </tr>
                <tr>
                    <td>2-光感</td>
                    <td>lux值</td>
                </tr>
            </tbody>
        </table>
        <p>
        <pre>
{
    "version": 1,
    "uuid": 4,
    "method": "s.event",
    "evt": "sensor",
    "did": "F0ACD760002D00",
    "func": 10,
    "value": [1, 1]
}               
表示传感器" F0ACD760002D00"人感被触发值为1</pre>

        </p>

        <h3 id="device-resq">面板按键状态上报事件</h3>
        <table class="table table-bordered table-striped js-options-table">
            <thead>
                <tr>
                    <th>value[0]</th>
                    <th>value[1]</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>按键序号</td>
                    <td>按键事件<br>0-按下<br>1-松开<br>2-长按<br>3-单击<br>4-双击<br>5-旋转 value[2]=旋转百分比[-100,100]</td>
                </tr>
            </tbody>
        </table>
        <p>
        <pre>{
    "version": 1,
    "uuid": 1632,
    "method": "s.event",
    "evt": "switch.key",
    "did": "ECC57F108F3BFF",
    "func": 9,
    "value": [3, 0]
}
表示面板" ECC57F108F3BFF"第3个按键被按下 【3，0】代表按键3被按下</pre>

        </p>

        <h3 id="sync">同步场景数据</h3>
        <h4 id="clientsync">客户端发起同步请求</h4>
        <p>
        <pre>{
    "version": 1,
    "uuid": 1234,
    "method": "c.query.scene"
}</pre>
        </p>

        <h4 id="response">服务端返回设备信息</h4>
        <p>代码示例：<br>
        <pre>{
    "version": 1,
    "uuid": 0,
    "method": "s.query.scene",
    "scenes": [{
            "sceneId": 2,
            "name": "喝茶"
        },
        {
            "sceneId": 4,
            "name": "会议"
        }]
}</pre>
        </p>

        <h3 id="sync">场景控制</h3>
        <h4 id="clientsync">客户端发起控制场景请求</h4>
        <p>
        <pre>{
    "version": 1,
    "uuid": 1,
    "method": "c.control",
    "action": "scene",
    "value": [33],    此value为上面同步获取的场景ID 
    "transition": 0
}</pre>
        </p>

    </div>
</div>

</html>